package com.um2.simplexe.serveur.ui.exec;

import java.awt.Component;
import java.util.Vector;

import javax.swing.JPanel;

import com.um2.simplexe.serveur.ui.entryPoint.FenetreApplicationServeur;
import com.um2.simplexe.serveur.ui.util.controleUI.InformationsSurApplication;
import com.um2.simplexe.serveur.ui.util.controleUI.actionsGeneriques.Evenements;
import com.um2.simplexe.serveur.ui.util.controleUI.actionsGeneriques.SocketThrdServer;
import com.um2.simplexe.serveur.ui.util.controleUI.chargeur.menu.ControleurDeMenu;
import com.um2.simplexe.serveur.ui.util.controleUI.chargeur.menu.ControleurDePanneaux;
import com.um2.simplexe.serveur.ui.zone.Zone;

public class Methodes implements ToutesLesMethodesServeur {

	private Runnable threadDEcoute = null ;
	
	
	public void fermerLApplication() {
		Evenements.quitterLAppli() ;
	}


	
	public void ajouterALaFenetre(String nom,JPanel j) {
		Zone.ajouterPanel(nom,j) ;
	}


	/**
	 * retire de la fenetre l'onglet numero i.
	 */
	public void retirerALaFenetre(int i) {
		Zone.enleverPanel(i) ;
	}



	/**
	 * rend le nombre d'onglets de la fenetre.
	 */
	public int getCountOnglets() {
		return Zone.getNombrePanels() ;
	}

	
	/**
	 * rend le panneau de l'onglet i de la fenetre.
	 */
	public Component getFenetrePanel(int i) {
		return Zone.getPanel(i);
	}


	/**
	 * rend le panneau courant de la fenetre.
	 */
	public Component getFenetreCurrentPanel() {
		return Zone.getCurrentPanel() ;
	}


	/**
	 * rend le nom sur la barre de titre
	 */
	public String getTitreAppli() {
		return FenetreApplicationServeur.getInstance().getTitle() ;
	}

	/**
	 * change le nom sur la barre de titre
	 */
	public void setTitreAppli(String titre) {
		FenetreApplicationServeur.getInstance().setTitle(titre) ;
	}

	/**
	 * renvoie la partie nord d'une zone, sinon null .
	 */
	public JPanel getHautDeFenetre() {
			return Zone.getNord() ;
	}


	public int getPortEcoute() {
		return SocketThrdServer.getPort() ;
	}

	public void setPortEcoute(int port) {
		SocketThrdServer.setPort(port) ;
	}

	public void arreterServeur() {
		if (threadDEcoute==null)
		{
			System.out.println("methodes.java::arreterServeur:: erreur:serveur non en marche");
			return ;
		}
		SocketThrdServer.coupeToutesLesConnexions() ;
		new Thread(threadDEcoute).interrupt() ;
		threadDEcoute = null ;
	}

	public Runnable lancerServeur() {
		if (threadDEcoute!=null)
			arreterServeur() ;
		threadDEcoute = SocketThrdServer.lanceEcoute(this) ;
		return threadDEcoute ;
	}

	public boolean isServeurDemarre() {
		if (threadDEcoute!=null) {
			System.out.println("demande si serveur demarre:: oui");		
		} else {
			System.out.println("demande si serveur demarre:: non");
		}
		return (threadDEcoute!=null) ;		
	}

	public Vector<String> getVectorLibrairiepartagee() {
		return InformationsSurApplication.listePluginsChargeurDeLibrairiesPartagees;
	}
	
	public Vector<ControleurDeMenu> getVectorPluginsMenus() {
		return InformationsSurApplication.listePluginsChargeurDeMenu;
	}

	public Vector<ControleurDePanneaux> getVectorPluginsPanneau() {
		return InformationsSurApplication.listePluginsChargeurDePanneaux;
	}

	public int getCurrentOpenTab() {
		return Zone.getCurrentOpenTab() ;
	}
}
